/**
 * @desc 隐藏页面所有指定DOM元素
 * @param el dom元素 如：img
 */
export const hide = (el) => Array.from(el).forEach(e => (e.style.display = 'none'));

/**
 * @desc 检查元素是否具有指定类
 * @param el DOM元素
 * @param className 类名
 */
export const hasClass = (el, className) => el.classList.contains(className)

/**
 * @desc 切换一个元素的类
 * @param el DOM元素
 * @param className 类名
 */
export const toggleClass = (el, className) => el.classList.toggle(className)


/**
 * @desc 获取当前页面滚动位置
 */
export const getScrollPosition = (el = window) => ({
  x: el.pageXOffset !== undefined ? el.pageXOffset : el.scrollLeft,
  y: el.pageYOffset !== undefined ? el.pageYOffset : el.scrollTop
});

/**
 * @desc 平滑滚动到页面顶部
 */
export const scrollToTop = () => {
  const c = document.documentElement.scrollTop || document.body.scrollTop;
  if (c > 0) {
    window.requestAnimationFrame(scrollToTop);
    window.scrollTo(0, c - c / 8);
  }
}

/**
 * @desc 检查父元素是否包含子元素
 * @param parent 父元素
 * @param child 子元素
 * @returns true 或 false
 */
export const elementContains = (parent, child) => parent !== child && parent.contains(child);

/**
 * @desc 获取元素中的所有图像
 * @param el 页面元素
 * @param includeDuplicates 为true 表示需要排除重复元素
 */
export const getImages = (el, includeDuplicates = false) => {
  const images = [...el.getElementsByTagName('img')].map(img => img.getAttribute('src'));
  return includeDuplicates ? images : [...new Set(images)];
};


/**
 * @desc 将字符串复制到剪贴板
 * @param el 页面元素
 * @param includeDuplicates 为true 表示需要排除重复元素
 */
export const copyToClipboard = (text) => {
  if (text.indexOf('-') !== -1) {
    let arr = text.split('-');
    text = arr[0] + arr[1];
  }
  var textArea = document.createElement("textarea");
  textArea.style.position = 'fixed';
  textArea.style.top = '0';
  textArea.style.left = '0';
  textArea.style.width = '2em';
  textArea.style.height = '2em';
  textArea.style.padding = '0';
  textArea.style.border = 'none';
  textArea.style.outline = 'none';
  textArea.style.boxShadow = 'none';
  textArea.style.background = 'transparent';
  textArea.value = text;
  document.body.appendChild(textArea);
  textArea.select();

  try {
    var successful = document.execCommand('copy');
    var msg = successful ? '成功复制到剪贴板' : '该浏览器不支持点击复制到剪贴板';
    alert(msg);
  } catch (err) {
    alert('该浏览器不支持点击复制到剪贴板');
  }

  document.body.removeChild(textArea);
}
